1
Fondements des collections allouées en mémoire dynamique
AI034Lesson 8
00:00

L'architecture de la croissance

Les collections de Rust, telles que Vec<T> et String, ne sont pas des types primitifs ; ce sont des structures définies dans la bibliothèque situées dans le module std module. Cette base détermine comment Rust organise les données via le système de modules et gère la mémoire grâce à RAII (l’acquisition de ressources est l’initialisation). Alors que les types simples vivent sur la pile, les collections utilisent Stockage en mémoire dynamique pour une croissance dynamique, ce qui signifie que leur mémoire doit être gérée explicitement via le trait Drop trait.

Résolution des modules et visibilité

Le compilateur Rust cartographie l'arborescence des modules en partant de la racine du paquet (src/lib.rs ou src/main.rs). Une déclaration comme mod front_of_house; invite le compilateur à rechercher src/front_of_house.rs ou src/front_of_house/mod.rs. En utilisant pub des modificateurs et des réexportations (pub use), cela permet d'interfacer de manière sécurisée les données allouées en mémoire dynamique encapsulées par des chemins idiomatiques.

Arbre de résolution des fichierssrc/lib.rssrc/front_of_house.rs- hosting.rspub use crate::front_of_house;let list = Vec::new();🦀?Piège : conflit entre mod.rs et name.rsdéclenche une erreur de compilation (Page 183)

Dès qu'un module sort de son champ d'action, le Drop implémentation libère automatiquement la mémoire dynamique : $$Memory_{reclaimed} = \sum Drop(Éléments)$$.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>